const { getTaskSearchPage } = require('../../../utils/task');
const {formatDateTime} = require('../../../utils/date')


Page({
  data: {
    keyword: '',
    tasks: [],
    page: 1,
    pageSize: 10,
    hasMore: true,
    loading: false,
    error: false,
    errorMessage: ''
  },

  onLoad(options) {
    // 获取搜索关键词
    const keyword = options.keyword ? decodeURIComponent(options.keyword) : '';
    this.setData({ keyword }, () => {
      this.loadTasks(true);
    });
  },

  /**
   * 搜索输入处理
   */
  onSearchInput(e) {
    this.setData({
      keyword: e.detail.value
    });
  },

  /**
   * 执行搜索
   */
  onSearch() {
    const { keyword } = this.data;
    if (!keyword.trim()) {
      wx.showToast({
        title: '请输入搜索关键词',
        icon: 'none'
      });
      return;
    }
    
    // 重置搜索状态
    this.setData({ 
      page: 1, 
      hasMore: true,
      error: false,
      errorMessage: ''
    });
    
    // 执行搜索
    this.loadTasks(true);
  },

  /**
   * 加载任务列表
   * @param {boolean} reset 是否重置列表
   */
  async loadTasks(reset = false) {
    // 防止重复加载
    if ((!this.data.hasMore && !reset) || this.data.loading) return;
    
    this.setData({ 
      loading: true,
      error: false,
      errorMessage: ''
    });

    try {
      const { page, pageSize, keyword } = this.data;
      
      console.log('搜索参数:', { keyword, page, pageSize });
      
      // 调用搜索接口 - 修复参数顺序：searchKey, current, size
      const res = await getTaskSearchPage(keyword || '', page, pageSize);
      
      console.log('API返回数据:', res);
      
      if (res && res.records) {
        // 格式化任务数据
        const formattedTasks = res.records.map(item => {
          try {
            return {
              id: item.id,
              taskName: item.taskName || '',
              taskDesc: item.taskDesc || '',
              cycleRule: item.cycleRule || '',
              quoteCount: item.quoteCount || 0,
              taskStartTime: item.taskStartTime,
              taskEndTime: item.taskEndTime,
              state: item.state,
              hotFlag: item.hotFlag,
              topFlag: item.topFlag,
              taskStartTimeFmt: item.taskStartTime ? formatDateTime(item.taskStartTime) : '',
              taskEndTimeFmt: item.taskEndTime ? formatDateTime(item.taskEndTime) : '',
            };
          } catch (error) {
            console.error('格式化任务数据失败:', error, item);
          }
        });

        console.log('格式化后的任务数据:', formattedTasks);

        // 移除本地过滤逻辑，因为后端已经处理了搜索
        const newTasks = reset ? formattedTasks : this.data.tasks.concat(formattedTasks);
        
        // 过滤有描述的任务
        const filteredTasks = newTasks.filter(item => item.taskDesc && item.taskDesc !== '暂无描述');
        
        console.log('过滤后的任务数据:', filteredTasks);
        
        this.setData({
          tasks: filteredTasks,
          page: page + 1,
          hasMore: res.records.length === pageSize,
          loading: false
        });
        
        console.log('更新后的数据状态:', {
          tasksCount: filteredTasks.length,
          hasMore: res.records.length === pageSize,
          page: page + 1
        });
      } else {
        throw new Error('返回数据格式错误');
      }
    } catch (error) {
      console.error('加载任务列表失败:', error);
      this.setData({
        loading: false,
        error: true,
        errorMessage: error.data?.msg || '加载失败，请重试'
      });
      
      // 显示错误提示
      wx.showToast({
        title: error.data?.msg || '加载失败',
        icon: 'none',
        duration: 2000
      });
    }
  },

  /**
   * 滚动到底部加载更多
   */
  onScrollToLower() {
    if (this.data.hasMore && !this.data.loading) {
      this.loadTasks();
    }
  },

  /**
   * 点击任务项
   */
  onTaskTap(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({ 
      url: `/pages/task/task-detail/task-detail?id=${id}` 
    });
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.setData({ 
      page: 1, 
      hasMore: true,
      error: false,
      errorMessage: ''
    });
    this.loadTasks(true).then(() => {
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 重试加载
   */
  onRetry() {
    this.setData({ 
      page: 1, 
      hasMore: true,
      error: false,
      errorMessage: ''
    });
    this.loadTasks(true);
  },

  /**
   * 页面显示时检查是否需要刷新
   */
  onShow() {
    // 如果页面有错误状态，可以在这里重置
    if (this.data.error) {
      this.setData({ 
        error: false,
        errorMessage: ''
      });
    }
  }
}); 